widget: Add private accessor to event controllers
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 6 Feb 2020 14:21:10 +0000 (14:21 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 19 Mar 2020 03:00:50 +0000 (23:00 -0400)
gtk/gtkwidget.c
gtk/gtkwidgetprivate.h

index d85f3109ed322aeef96f8e5ce6c9407d3f693000..af5431bd1f5c0381a61c5cf79a2c9c22618f9da2 100644 (file)
@@ -12043,6 +12043,24 @@ gtk_widget_reset_controllers (GtkWidget *widget)
     }
 }
 
+GList *
+gtk_widget_list_controllers (GtkWidget           *widget,
+                             GtkPropagationPhase  phase)
+{
+  GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
+  GList *res = NULL, *l;
+
+  for (l = priv->event_controllers; l; l = l->next)
+    {
+      GtkEventController *controller = l->data;
+
+      if (gtk_event_controller_get_propagation_phase (controller) == phase)
+        res = g_list_prepend (res, controller);
+    }
+
+  return g_list_reverse (res);
+}
+
 static inline void
 gtk_widget_maybe_add_debug_render_nodes (GtkWidget   *widget,
                                          GtkSnapshot *snapshot)
index 9b5bed504a0fe39cab27bfeadf8690bf18b9740f..41c78b98c3902b34c3b88f10075b3ed483d4243d 100644 (file)
@@ -284,6 +284,9 @@ gboolean          gtk_widget_has_size_request              (GtkWidget *widget);
 
 void              gtk_widget_reset_controllers             (GtkWidget *widget);
 
+GList *           gtk_widget_list_controllers              (GtkWidget           *widget,
+                                                            GtkPropagationPhase  phase);
+
 gboolean          gtk_widget_query_tooltip                 (GtkWidget  *widget,
                                                             gint        x,
                                                             gint        y,